package cl.tinet.trainee.tarea6.model;

import java.io.Serializable;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;

import org.hibernate.annotations.Type;
/**
 * Objeto usado para realizar el map con la tabla usuarios de la bd.
 * @author tinet
 *
 */
@Entity
public class Usuario implements Serializable {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	@Id
	@Column(name = "idusuario")
	private int idUsuario;

	@Column(name = "username")
	private String username;

	@Column(name = "nombres")
	private String nombres;

	@Column(name = "apellidoPaterno")
	private String apellidoPaterno;

	@Column(name = "apellidoMaterno")
	private String apellidoMaterno;

	@Column(name = "password")
	private String password;

	@Column(name = "activo")
	@Type (type = "org.hibernate.type.NumericBooleanType")
	private Boolean activo;

	public int getIdUsuario() {
		return idUsuario;
	}

	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}

	public String getUsername() {
		return username;
	}

	public void setUsername(String username) {
		this.username = username;
	}

	public String getNombres() {
		return nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	public String getApellidoPaterno() {
		return apellidoPaterno;
	}

	public void setApellidoPaterno(String apellidoPaterno) {
		this.apellidoPaterno = apellidoPaterno;
	}

	public String getApellidoMaterno() {
		return apellidoMaterno;
	}

	public void setApellidoMaterno(String apellidoMaterno) {
		this.apellidoMaterno = apellidoMaterno;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public Boolean getActivo() {
		return activo;
	}

	public void setActivo(Boolean activo) {
		this.activo = activo;
	}
/**
 * Dos usuarios seran iguales si sus username son iguales.
 */
	@Override
	public boolean equals(Object obj) {

		if (obj == null) {
			return false;
		} else {
			if (obj instanceof Usuario) {
				if (this.getUsername().equals(((Usuario) obj).getUsername())) {
					return true;
				}
			}
		}
		return false;

	}
	
	@Override
	public int hashCode() {
		return super.hashCode();
	}

	public void copiar(Usuario usuario){
		this.username=usuario.getUsername();
		this.nombres=usuario.getNombres();
		this.apellidoPaterno=usuario.getApellidoPaterno();
		this.apellidoMaterno=usuario.getApellidoMaterno();
		this.password=usuario.getPassword();		
		this.activo=usuario.getActivo();
	}
}
